lists

Provide a concise way to create lists.

new_list = [expression for member in iterable]

[x**2 for x in range(10)]
#  [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

conditionals

conditionals are important because they allow list comprehensions to filter out unwanted values

new_list = [expression for member in iterable (if conditional)]

[x**2 for x in range(10) if x%2 == 0]
#  [0, 4, 16, 36, 64]

new_list = [expression (if conditional) for member in iterable]

[x if x%2 == 0 else 0 for x in range(10)]
#  [0, 0, 2, 0, 4, 0, 6, 0, 8, 0]

nesting


dicts

new_dict = {v: k for k, v in some_dict.items()}

fahrenheit = {'t1': -30,'t2': -20,'t3': -10,'t4': 0}
celsius = {k:(float(5)/9)*(v-32) for (k,v) in fahrenheit.items()}
celsius
#  {'t1': -34.44444444444444, 't2': -28.88888888888889, 't3': -23.333333333333336, 't4': -17.77777777777778}

conditionals

dict1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
dict2 = {k:v for (k,v) in dict1.items() if v>2}
dict2
#  {'c': 3, 'd': 4, 'e': 5}

tuples

# TODO

sets

new_set = {expression for member in iterable}

{x**2 for x in range(10)}
#  {0, 1, 64, 4, 36, 9, 16, 49, 81, 25}